#ifndef GET_MSGS_FROM_JSON_H_
#define GET_MSGS_FROM_JSON_H_

#include <jsoncpp/json/json.h>
#include <agv_msgs/msg/order.hpp>
#include <agv_msgs/msg/map_node.hpp>
#include <agv_msgs/msg/action.hpp>
#include <agv_msgs/msg/action_param.hpp>
#include <agv_msgs/msg/relocate_radius.hpp>
#include <agv_msgs/msg/output_port.hpp>
#include <agv_msgs/msg/map_edit_points.hpp>
#include <agv_msgs/msg/map_edit_poly.hpp>
#include <agv_msgs/msg/map_edit_erase.hpp>
#include <agv_msgs/msg/map_edit_transform.hpp>
#include <agv_msgs/msg/periph_teleop.hpp>

// #include <reflector_slam_ros/msg/reflector_landmark.hpp>

#include <geometry_msgs/msg/point.hpp>
#include <geometry_msgs/msg/point32.hpp>
#include <geometry_msgs/msg/pose2_d.hpp>
#include <geometry_msgs/msg/vector3.hpp>
#include <geometry_msgs/msg/twist.hpp>
#include <geometry_msgs/msg/twist_stamped.hpp>

#include <std_msgs/msg/u_int8.hpp>
#include <std_msgs/msg/string.hpp>
#include <std_msgs/msg/bool.hpp>
/*---------------------------------------------------*/

agv_msgs::msg::Order get_agv_msgs_V_order(const Json::Value &json);
agv_msgs::msg::MapNode get_agv_msgs_V_node(const Json::Value &json);
agv_msgs::msg::Action get_agv_msgs_V_action(const Json::Value &json);
agv_msgs::msg::ActionParam get_agv_msgs_V_actionParam(const Json::Value &json);
agv_msgs::msg::RelocateRadius get_agv_msgs_RelocateRadius(const Json::Value &json);
agv_msgs::msg::OutputPort get_agv_msgs_OutputPort(const Json::Value &json);
agv_msgs::msg::MapEditPoints get_agv_msgs_mapEdit_points(const Json::Value &json);
agv_msgs::msg::MapEditPoly get_agv_msgs_mapEdit_poly(const Json::Value &json);
agv_msgs::msg::MapEditErase get_agv_msgs_mapEdit_earse(const Json::Value &json);
agv_msgs::msg::MapEditTransform get_agv_msgs_mapEdit_Transform(const Json::Value &json);
agv_msgs::msg::PeriphTeleop get_agv_msgs_PeriphTeleop(const Json::Value &json);

// reflector_slam_ros::msg::reflectorLandmark get_reflector_slam_ros_reflectorLandmark(const Json::Value &json);

geometry_msgs::msg::Point get_geometry_msgs_Point(const Json::Value &json);
geometry_msgs::msg::Point32 get_geometry_msgs_Point32(const Json::Value &json);
geometry_msgs::msg::Pose2D get_geometry_msgs_Pose2D(const Json::Value &json);
geometry_msgs::msg::Vector3 get_geometry_msgs_Vector3(const Json::Value &json);
geometry_msgs::msg::Twist get_geometry_msgs_Twist(const Json::Value &json);
geometry_msgs::msg::TwistStamped get_geometry_msgs_TwistStamped(const Json::Value &json);

std_msgs::msg::UInt8 get_std_msgs_UInt8(const Json::Value &json);
std_msgs::msg::String get_std_msgs_String(const Json::Value &json);
std_msgs::msg::Bool get_std_msgs_Bool(const Json::Value &json);


#endif // GET_MSGS_FROM_JSON_H_